#include <iostream>
#include <cstring>
using namespace std;

/*
    定义类：
        class 类名
        {
            成员函数 -->功能
            成员变量 -->参数信息
        };
    使用类：
        类名 对象名;
    类的权限：          防止数据泄露
        定义类时没有设置权限，默认所有都是private
        public: 公有权限
        private: 私有权限
        protected: 保护权限
    访问私有权限的成员变量或成员函数：
        1.设置公有接口 -->修改私有的成员

    创建对象：可以使用栈空间，也可以使用堆空间
    struct也可以定义类，但是传统的结构体中不可以定义函数
        struct定义的类，类的权限默认都是public
*/

class Cat
{
public:
    void catchMouse()
    {
        cout << "抓老鼠" << endl;
    }
    void playMagic()
    {
        cout << "玩魔方" << endl;
    }
    void setAttr(int a, char *n, float w)
    {
        age = a;
        strcpy(name, n);
        weight = w;
    }
    void show()
    {
        cout << "年龄：" << age << endl;
        cout << "名字：" << name << endl;
        cout << "体重：" << weight << endl;
    }
private:
    int age;
    char name[32];
    float weight;
};

int main()
{
    //使用栈空间
    Cat c1;
    //使用堆空间
    c1.catchMouse();
    char name1[32] = "小猫";
    c1.setAttr(3, name1, 0.5);
    c1.show();
    Cat *c2 = new Cat;
    c2->playMagic();
    char name2[32] = "大咩";
    c2->setAttr(5, name2, 0.8);
    c2->show();


    return 0;
}